package com.cmc.cloud.cmclink.doc.vo.bkgtarriffnovo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.*;
import java.util.Date;

/**
 * 订舱公布价约号 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 *
 * @author codegen
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BkgTarriffNoBaseVO {

    @Schema(description = "订舱人代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{BkgTarriffNoBaseVO.bkpCode.NotBlank}")
    @Length(max = 50, message = "{BkgTarriffNoBaseVO.bkpCode.Length}")
    private String bkpCode;

    @Schema(description = "公布价约号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{BkgTarriffNoBaseVO.bookingTarriff.NotBlank}")
    @Length(max = 30, message = "{BkgTarriffNoBaseVO.bookingTarriff.Length}")
    private String bookingTarriff;

    @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "{BkgTarriffNoBaseVO.enable.NotNull}")
    private Boolean enable;

    /**
     * 订舱协议编号
     */
    @Schema(description = "订舱协议编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{BkgTarriffNoBaseVO.bookingAgreementNo.NotBlank}")
    @Length(max = 50, message = "{BkgTarriffNoBaseVO.bookingAgreementNo.Length}")
    private String bookingAgreementNo;


    /**
     * 可订舱港口
     */
    @Schema(description = "可订舱港口", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{BkgTarriffNoBaseVO.pols.NotBlank}")
    @Length(max = 50, message = "{BkgTarriffNoBaseVO.pols.Length}")
    private String pols;

    /**
     * 生效时间
     */
    @Schema(description = "生效时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "{BkgTarriffNoBaseVO.effectiveDate.NotNull}")
    private Date effectiveDate;

    /**
     * 失效时间
     */
    @Schema(description = "失效时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "{BkgTarriffNoBaseVO.expirationDate.NotNull}")
    private Date expirationDate;

}
